# #1.设计一个类(类比生活；设计一张登记表)
# class student:
#     name=None#记录学生姓名
#     gender=None#记录学生性别
#     nationality=None#记录学生国籍
#     native_place=None#记录学生籍贯
#     age=None#记录学生年龄
# #2.创建一个对象（类比生活中打印一张登记表）
# stu_1=student()  #stu_1既是❗对象也是变量，student（）相当于那个表格，
# # 然后用那个变量（对象）--stu_1接收它
# #3.对象属性进行赋值（类比生活中；填写表单）
# stu_1.name='林🐖🐖'
# stu_1.gender="男"
# stu_1.nationality="中国"
# stu_1.native_place="广东省"
# stu_1.age=22
# #4.获取对象中记录的信息
# print(stu_1.name)
# print(stu_1.gender)
# print(stu_1.nationality)
# print(stu_1.native_place)
# print(stu_1.age)

# 成员变量和成员方法
# 那么，什么是类的行为 (方法) 呢?
# class student:
#     name = None# 学生的姓名→通过定义属性记录数据
#     age = None#学生的年龄→通过定义属性记录数据
#     def say_hi(self) :#👉通过定义函数，记录行为
#         print(f"Hi大家好，我是{self.name}")#用方法访问上面定义的变量name
# stu = student()                          #用到self.变量
# stu.name ="周杰轮"
# stu.say_hi()# 输出: Hi大家好，我是周杰轮
# 可以看出，类中:
# 不仅可以定义属性用来记录数据
# 也可以定义函数，用来记录行为
# 其中:
# 类中定义的属性(变量)，我们称之为:成员变量.
# 类中定义的行为(函数)，我们称之为:成员方法  ❗方法=类内部定义的函数

# 注意事项
# self关键字，尽管在参数列表中，但是传参的时候可以忽略它
# 如:
# class Animal:
#     name=None
#     def say_hello(self):
#         print(f"hello大家好，我是{self.name}")
#     def say_hello1(self,who):
#         print(f"hello大家好，我是{who}")
# ani=Animal()#变量接收类对象
# ani.name="林🐖🐖"#对象属性进行赋值
# ani.say_hello()# 调用的时候无需传参
#
# ani.say_hello1("林🐖🐖")# 调用的时候，需要传who的参数




# """
#  演示面向对象类中的成员方法定义和使用
# """
#
# #定义一个·带有成员方法·的类
# class student:
#     name=None#学生姓名
#
#     def say_hh(self):
#         print(f"大家好丫，我是{self.name},hh")
#
#     def say_hh2(self):               #❗↓而i是外部传入的所以可以直接用
#         print(f"大家好丫，我是{self.name},{i}hh")
#                               #❗👆想要访问成员属性必需要有self这个关键字
# stu=student()
# stu.name="🐖"
# stu.say_hh()
#
# stu2=student()
# stu2.name="🐏"
# stu2.say_hh()
# #------------------------------------------------------
# #调用定义的第二个函数
# pig=student()
# pig.name="林城斌"
# i="我是一头猪🐖"
# pig.say_hh2()

#summary:
# 1.类是由哪两部分组成呢?
# 类的属性，称之为:成员变量
# 类的行为，称之为:成员方法
# 注意:函数是写在类外的，定义在类内部，我们都称之为方法哦
# 总结
# 2.类和成员方法的定义语法
# class 类名称:
    # 成员变量
    # def 成员方法(self，参数列表):
        # 成员方法体
# 对象 = 类名称()

# 3.self的作用
# 表示类对象本身的意思
# 只有通过self，成员方法才能访问类的成员变量
# self出现在形参列表中，但是不占用参数位置，无需理会

class clock:
    id=None#序列号
    price=None#价格·
    def ring(self):#行为
        import winsound
        winsound.Beep(2000,3000)#响铃的持续时间
#构建两个闹钟对象并让其工作
clock1=clock()
clock1.id="🐖🐖"
clock1.price="100"
print(f"闹钟ID：{clock1.id},价格：{clock1.price}")
clock1.ring()

clock2=clock()
clock2.id="🐖"
clock2.price="100"
print(f"闹钟ID：{clock2.id},价格：{clock2.price}")
clock2.ring()

# summary：
# 1.现实世界的事物由什么组成?
# 属性
# 行为
#
# 总结
# 类也可以包含属性和行为，所以使用类描述现实世界事物是非常合适的
# 2.类和对象的关系是什么?
# 类是程序中的“设计图纸”
# 对象是基于图纸生产的具体实体
# 3.什么是面向对象编程?
# 面向对象编程就是，使用对象进行编程
# 即，设计类，基于类创建对象，❗并使用对象来完成具体的工作❗









